package com.wechat.admin.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.sun.org.apache.xpath.internal.operations.Bool;
import com.wechat.admin.model.dto.WeDeviceDto;
import com.wechat.admin.model.entity.WeDevice;
import com.wechat.admin.model.request.*;
import com.wechat.admin.model.vo.*;
import com.wechat.admin.response.PageResponse;

import java.util.List;
import java.util.Map;
import java.util.concurrent.CompletableFuture;

/**
* @author dell
* @description 针对表【we_device】的数据库操作Service
* @createDate 2024-12-15 19:59:39
*/
public interface WeDeviceService extends IService<WeDevice> {

    /**
     * 根据userIds获取所有的设备信息
     * @param userIdList
     * @return
     */
    Map<Long,List<WeDeviceDto>> getDeviceListByUserIds(List<Long> userIdList);

    /**
     * 获取登录二维码 初次登录不需要appId
     * @param getLoginQrCodeRequest
     * @return
     */
    LoginQrCodeVo getLoginQrCode(GetLoginQrCodeRequest getLoginQrCodeRequest);

    /**
     * 扫码之后的登录请求登录
     * @param weChatLoginRequest
     * @return
     */
   WeChatLoginInfoVo weChatLogin(WeChatLoginRequest weChatLoginRequest);


    /**
     * 检查是否在线
     * @param checkOnlineRequest
     * @return
     */
    Map<String, Boolean> checkOnline(CheckOnlineRequest checkOnlineRequest);

    /**
     * 查询可使用Token
     * @return
     */
    List<DockerTokenVo> getUsableToken();

    /**
     * 查询用户下可使用的token设备登录
     * @return
     */
    List<UsableDeviceVo> getUsableDeviceList();

    /**
     * 微信登出请求
     * @param weChatLogOutRequest
     * @return
     */
    Boolean weChatLogout(WeChatLogOutRequest weChatLogOutRequest);

    /**
     * 管理员查询分配设备
     * @return
     */
    AssignmentDeviceVo getAssignmentDeviceList(int currentPage, int pageSize);


    /**
     * 管理员删除用户和设备的绑定关系
     * @param delDeviceAndUserRelRequest
     * @return
     */
    Boolean delUserAndDevRelation(DelDeviceAndUserRelRequest delDeviceAndUserRelRequest);

}
